The present invention relates generally to a computing system having a novel serial communication bus, and more particularly to a novel communication protocol for communicating with peripheral devices connected to the serial communication bus.
Hot pluggable peripheral device communication buses are well known in the art. For example, universal serial bus (USB) is an external bus standard that supports data transfer rates of up to 12 megabits per second. A single USB port can be used to connect up to 127 peripheral devices, such as mice, modems, keyboards, and the like.
Another external bus standard is IEEE 1394, also commonly referred to as Firewire, I-link and/or Lynx. IEEE 1394 is a very fast external bus standard that supports data transfer rates of up to 400 megabits per second. A single IEEE 1394 port can be used to connect up to 63 external devices.
Both IEEE 1394 and USB support plug and play and hot plugging installations, and also provide power to the connected peripheral devices.
When using these external device communication buses, it is important to be able to determine which devices are connected to the bus, what the device capabilities are, and what the physical configuration of the peripheral devices are; especially when daisy chaining devices together and hot plugging devices onto the bus on the fly.
For example, if new devices are added to the communication bus, either directly or through another peripheral device with connection ports, the host device will need to determine where the devices are located, what the devices are, and what the topology of the connections are (i.e., the connection path to the devices). In addition, the host may need to initialize the devices, for example calibrating a joy stick, or down loading software drivers, before the devices can be used.
Also, during normal operation, it is important that the host be able to efficiently read status information from the devices, such as keystrokes, button presses, joystick positions, mouse movements, and the like. This status information should be read frequently, commonly between 50 and 100 times per second, so it is important that these functions do not require much host processing overhead. Finally, it is important that the host be able to detect device configuration changes (e.g., the removal of a device or a device error) simply, as the host will pole for changes at regular intervals.
The problem with USB and IEEE 1394 is that they require complex communication protocols to handle bus arbitration functionality and other complex communication tasks. In many instances, these complex protocols are not necessary and it is desirable to have a more simplified communication bus and protocol. Thus, what is needed is a simple, yet robust serial communication bus and associated communication protocol for connecting serial peripheral devices.